package com.rpframework.module.common.bottom.service;

import com.rpframework.core.json.JsonResp;

/**
 * 发送短信
 *
 * @author 刘兴
 */
public interface SmsService {
    /**
     * 发送短信
     *
     * @param mobile  手机号码
     * @param content 短信内容
     * @return 是否成功
     */
    boolean sendSms(String mobile, String content);

    /**
     * 发送短信带验证码<br>
     * 参数 smsTemplateId 传入值 与检测验证码相同
     *
     * @param mobile        手机号
     * @param content       短信内容
     * @param verifyCode    验证码
     * @param smsTemplateId 模板ID
     * @return 是否成功
     */
    boolean sendSmsByVerifyCode(String mobile, String content, String verifyCode, String smsTemplateId);

    /**
     * 发送短信带验证码<br>
     * 参数 smsTemplateId 传入值 与检测验证码相同<br>
     * 验证码默认4位数字
     *
     * @param mobile  手机号
     * @param content 短信内容
     * @return 是否成功
     */
    boolean sendSmsByVerifyCode(String mobile, String content, String smsTemplateId);

    /**
     * 发送短信带验证码<br>
     * 参数 smsTemplateId 传入值 与检测验证码相同<br>
     * 验证码默认4位数字
     *
     * @param mobile 手机号
     * @return 是否成功
     */
    boolean sendSmsByVerifyCode(String mobile, String smsTemplateId);

    /**
     * 发送短信带验证码<br>
     * 参数 smsTemplateId 传入值 与检测验证码相同
     *
     * @param mobile        手机号
     * @param content       短信内容
     * @param verifyCode    验证码
     * @param smsTemplateId 模板ID
     * @return 是否成功
     */
    boolean sendSmsByVerifyCode(String mobile, String content, Integer verifyCode, Integer smsTemplateId)
            throws IllegalArgumentException;

    /**
     * 发送短信带验证码<br>
     * 参数 smsTemplateId 传入值 与检测验证码相同
     *
     * @param mobile        手机号
     * @param content       短信内容
     * @param verifyCode    验证码
     * @param smsTemplateId 模板ID
     * @return 是否成功
     */
    boolean sendSmsByVerifyCode(String mobile, String content, Integer verifyCode, String smsTemplateId)
            throws IllegalArgumentException;

    /**
     * 检测短信验证码 <br>
     * 未检测到验证码抛出异常信息
     *
     * @param mobile        手机号
     * @param verifyCode    验证码
     * @param smsTemplateId 模板ID
     * @return 正确错误
     */
    boolean checkSmsVerifyCode(String mobile, String verifyCode, String smsTemplateId) throws IllegalArgumentException;

    /**
     * 检测短信验证码
     *
     * @param mobile        手机号
     * @param verifyCode    验证码
     * @param smsTemplateId 模板ID
     * @return 正确错误
     */
    boolean checkSmsVerifyCode(String mobile, Integer verifyCode, Integer smsTemplateId);


    /**
     *  sendSmsByVerifyCodeJson
     */
    JsonResp sendSmsByVerifyCodeJson(String mobile, String smsTemplateId);


}
